import createAlarm from "./nativeMsg.js"
// 定义一个全局变量保存 NativeMsg 实例
const showAlarmMsg = {
		install: function(Vue) {
			let alarmMsgInstance = null;
			const showAlarmMsg = function(item = {}) {
				//#ifdef APP-PLUS
					//	业务需求只保留一个弹窗, 当存在的时候要干掉
					if (alarmMsgInstance && alarmMsgInstance.getStatus() === "active") {
						let _oldIns = alarmMsgInstance;
						clearTimeout(alarmMsgInstance.clearSetTimeIns)
						alarmMsgInstance = null;
						//延迟300 等新的弹窗出来后再消失，视觉上比较好看
						setTimeout(() => {
							_oldIns.hide();
						}, 300);
					}
					// 创建一个新的弹窗（新的会覆盖在旧的上面）
					alarmMsgInstance = createAlarm(item, res => {
						// 这里是点击或者滑动的回调 点击type是‘click’,滑动是‘move’
						// result 是传递过去的item，原封不动的返回过来了。
						const {
							type,
							result
						} = res;
						if (type === "move") return;
						if (result.url)
							uni.navigateTo({
								url: result.url
							});
					});
					//2.5秒后隐藏
					if(item.duration>0){
						alarmMsgInstance.clearSetTimeIns=setTimeout(() => {
							alarmMsgInstance.animationHide();
						}, item.duration);
					}
					//#endif

					// 适应H5
					//#ifdef H5
					uni.showToast({
					  title: item.description||item,
					  icon: 'error'
					})
					//#endif
				}
				// $showModal挂载到uni对象上
				uni.$showAlarmMsg= showAlarmMsg
				Vue.config.globalProperties.$showAlarmMsg = showAlarmMsg
			}
		};
export default showAlarmMsg;